﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using System.Text.RegularExpressions;

namespace DataAccessComponents
{
    public class Oddzial : IDataErrorInfo
    {
        /// <summary>
        /// Id oddzialu
        /// </summary>
        private int id_oddzial;

        public int Id_oddzial
        {
            get { return this.id_oddzial; }
            set { this.id_oddzial = value; }
        }

        /// <summary>
        /// Nazw oddziału
        /// </summary>
        private string nazwa;

        public string Nazwa
        {
            get { return this.nazwa; }
            set { this.nazwa = value; }
        }

        /// <summary>
        /// Nr telefonu oddziału
        /// </summary>
        private string nr_telefonu;

        public string Nr_telefonu
        {
            get { return this.nr_telefonu; }
            set { this.nr_telefonu = value; }
        }

        /// <summary>
        /// Id adresu oddziału
        /// </summary>
        private int id_adres;

        public int Id_adres
        {
            get { return this.id_adres; }
            set { this.id_adres = value; }
        }

        /// <summary>
        /// Obiekt Adres zawierający informacje o oddziale
        /// </summary>
        private Adres adres;

        public Adres Adres
        {
            get { return this.adres; }
            set { this.adres = value; }
        }

        /// <summary>
        /// Konstruktor obiektu oddzial
        /// </summary>
        /// <param name="ido">Id oddziału</param>
        /// <param name="na">Nazwa</param>
        /// <param name="nr_tel">Nr telefonu</param>
        /// <param name="ida">Id adresu</param>
        /// <param name="adr">Adres</param>
        public Oddzial(int ido, string na, string nr_tel, int ida, Adres adr)
        {
            this.id_oddzial = ido;
            this.nazwa = na;
            this.nr_telefonu = nr_tel;
            this.id_adres = ida;
            this.adres = adr;
        }

        public Oddzial()
            : this(0, "", "", 0, new Adres())
        {
        }

        public string Error
        {
            get { return string.Empty; }
        }

        public string this[string propertyName]
        {
            get
            {
                string result = string.Empty;
                propertyName = propertyName ?? string.Empty;

                if (propertyName == "Nazwa")
                {
                    if (string.IsNullOrEmpty(this.Nazwa))
                    {
                        result = "Pole \"Nazwa\" nie może być puste";
                    }
                    else if (Regex.IsMatch(this.Nazwa, @"[@£_^{}\[~\]|ÆæßÉ!¤%&'()\*\+,.:;<=>§?]+"))
                    {
                        result = "Pole \"Nazwa\" zawiera niedozwolone znaki";
                    }

                }
                else if (propertyName == "Nr_telefonu")
                {
                    if (string.IsNullOrEmpty(this.Nr_telefonu))
                    {
                        result = "Pole \"Nr_telefonu\" nie może być puste";
                    }
                    else if (!Regex.IsMatch(this.Nr_telefonu, "[0-9]{9}"))
                    {
                        result = "Pole \"Nr_telefonu\" zawiera niedozwolone znaki";
                    }
                    else if (this.Nr_telefonu.Length < 9)
                    {
                        result = "\"Nr_telefonu\" jest zakrótkie";
                    }
                    else if (this.Nr_telefonu.Length > 9)
                    {
                        result = "\"Nr_telefonu\" jest zadługie";
                    }
                }

                return result;
            }
        }

    }
}
